from typing import List  # Import List from typing module

class Solution:
    """
    方法： findPeakElement

    逻辑: 使用二分查找来寻找数组中的峰值元素。通过比较中间元素与其右侧元素的大小关系来确定峰值的位置。
    如果中间元素大于其右侧元素，则峰值在左半部分；否则在右半部分。

    Args:
        nums (List[int]): 输入的整数数组。

    Returns:
        int: 任意一个峰值元素的索引。

    Time:  
        O(log n)，其中 n 是数组的长度。每次迭代将搜索范围缩小一半。

    Space:  
        O(1)，只使用了常数级别的额外空间。
    """
    def findPeakElement(self, nums: List[int]) -> int:
        left, right = -1, len(nums) -1 #开区间[-1, n-1]
        while left + 1 < right:
            mid = (left + right) // 2
            if nums[mid] > nums[mid + 1]:
                right = mid
            else:
                left = mid
        return right 
        